import axios from 'axios'
import router from "@/router";
//引入进度条
import nprogress from 'nprogress';
//引入相关进度条的样式
import "nprogress/nprogress.css";
const request = axios.create({
    baseURL: 'http://127.0.0.1:8080/api',
    // baseURL: 'http://192.168.62.17:8080/api',
    timeout: 10000
})
//请求拦截器:将来项目中【N个请求】，只要发请求,会触发请求拦截器!!!
request.interceptors.request.use(config => {
    //请求拦截器:请求头【header】,请求头能否给服务器携带参数
    //请求拦截器：其实项目中还有一个重要的作用,给服务器携带请求们的公共的参数
    nprogress.start();//进度条开始
    // //token[公共参数]
    const token = sessionStorage.getItem("token");
    if(token){
        config.headers.Authorization = `Bearer ${token}`
    }
    return config;
});


//响应拦截器：请求数据返回会执行
request.interceptors.response.use((res) => {
    //res:实质就是项目中发请求、服务器返回的数据
    //进度条结束
    nprogress.done();//进度条结束
    if(res.data.msg!=='请求成功'){
        return Promise.reject(res.data.msg)
    }else {
        return res.data;
    }
}, (err) => {
    nprogress.done();//进度条结束
    //温馨提示:某一天发请求,请求失败,请求失败的信息打印出来
    const errMsg = err.response.data.message;
    if(errMsg === "身份验证失败"){
        //清除token
        localStorage.removeItem("token");
        //跳转到登录页面
        router.push({path: "/login"});
    }
    //终止Promise链
    // throw new Error(err.response.data.message)
    // 其他错误情况
    return Promise.reject(err.response.data.message);
});

export default request
